#include "motor.h"

int PWM_MAX = 7200, PWM_MIN = -7200;
int motor1, motor2; 

/**
 * @brief 电机初始化
 * @param  无
 * @retval  无
 **/
void Motor_Init(void)
{
	GPIO_InitTypeDef GPIO_InitStruct;

	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);

	GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
	GPIO_InitStruct.GPIO_Pin = GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;
	GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOB, &GPIO_InitStruct);
}


/**
 * @brief 电机限幅
 * @param  限幅电机地址值
 * @retval  无
 **/
void Limit(int *motorA, int *motorB)
{
	if (*motorA > PWM_MAX)
	{
		*motorA = PWM_MAX;
	}
	if (*motorA < PWM_MIN)
	{
		*motorA = PWM_MIN;
	}

	if (*motorB > PWM_MAX)
	{
		*motorB = PWM_MAX;
	}
	if (*motorB < PWM_MIN)
	{
		*motorB = PWM_MIN;
	}
}
/**
 * @brief 绝对值函数
 * @param  值
 * @retval  绝对值
 **/
int MyAbs(int p)
{
	return (p >= 0 ? p : (-p));
}

/**
 * @brief 载入电机
 * @param 左右轮pwm
 * @retval 无
 **/
void load(int motor1, int motor2)
{
	if (motor1 > 0)
	{
		Ain1 = 1;
		Ain2 = 0;
	}
	else
	{
		Ain1 = 0;
		Ain2 = 1;
	}
	TIM_SetCompare1(TIM1, MyAbs(motor1)); 
	
	if (motor2 > 0)
	{
		Bin1 = 1;
		Bin2 = 0;
	}
	else
	{
		Bin1 = 0;
		Bin2 = 1;
	}
	TIM_SetCompare4(TIM1, MyAbs(motor2));
}

/**
 * @brief 刹车
 * @param 无
 * @retval 无
 **/
void brake(void)
{
	GPIO_SetBits(GPIOB,GPIO_Pin_12);
	GPIO_SetBits(GPIOB,GPIO_Pin_13);
	GPIO_SetBits(GPIOB,GPIO_Pin_14);
	GPIO_SetBits(GPIOB,GPIO_Pin_15);
}